﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;

namespace GUI
{
    using DevExpress.XtraGrid;
    using DevExpress.XtraGrid.Views.Layout;
    using DevExpress.XtraGrid.Columns;
    using DevExpress.XtraLayout;
    using DevExpress.XtraLayout.Customization;
    using DevExpress.XtraLayout.Utils;
    using DevExpress.XtraEditors.Repository;
    using DevExpress.XtraEditors.Controls;
    using DevExpress.XtraEditors;
    
    using GUI.Library;
    using WS.DAL.Entities;
    using SV;

    public partial class FrmMainGuest : Office2007Form
    {
        public FrmMainGuest()
        {
            InitializeComponent();
        }

        SV.Bussiness _bllbus = new Bussiness();
        SV.Catalog _bllCat = new SV.Catalog();

        public static Guid Khachhang_Id = Guid.Empty;
        public static string TenDangNhap = "";
        public static string Ten = "";
        public static string Quyen = "";

        Guid KeyId = Guid.Empty;
        string KeyLoai = string.Empty;

        GridControl gcDS = new GridControl();

        LayoutView lvDS;

        private void FrmMainGuest_Load(object sender, EventArgs e)
        {
            Dangnhap();
            palLoadTrangchu.Controls.Clear();
            UcTrangChu ucTrangchu = new UcTrangChu();
            palLoadTrangchu.Controls.Add(ucTrangchu);
            palLoadTrangchu.Dock = DockStyle.Fill;
            lokLoai.Properties.DataSource = _bllCat.Danhmuc_Select_Loai("Loaihang");
            lokNSX.Properties.DataSource=_bllCat.Danhmuc_Select_Loai("NSX");
        }

        private void Dangnhap()
        {
            lblDangNhap.Visible = true;
            txtTenDangNhap.Visible = true;
            txtPass.Visible = true;
            btnDangNhap.Visible = true;
            btnDangKy.Visible = true;
            btnQuenMatKhau.Visible = true;
            lblXinChao.Visible = false;
            btnDangXuat.Visible = false;
            btnTrangQL.Visible = false;
            barCaNhan.Visible = false;

        }

        private void DangNhapThanhCong()
        {
            lblDangNhap.Visible = false;
            txtTenDangNhap.Visible = false;
            txtPass.Visible = false;
            btnDangNhap.Visible = false;
            btnDangKy.Visible = false;
            lblXinChao.Visible = true;
            btnDangXuat.Visible = true;

            barCaNhan.Visible = true;

            btnQuenMatKhau.Visible = false;
            //btnCaNhan.Visible = true;
        }

        private void btnDangXuat_Click(object sender, EventArgs e)
        {
            Dangnhap();
            TenDangNhap = "";
            Ten = "";
            Quyen = "";
            Khachhang_Id = Guid.NewGuid();
        }

        private void btnDangNhap_Click(object sender, EventArgs e)
        {
            if (txtTenDangNhap.Text != "" && txtPass.Text != "")
            {
                DataTable ND = _bllbus.Nguoidung_Select_Ma(txtTenDangNhap.Text);
                if (ND.Rows.Count > 0)
                {
                    if (ND.Rows[0]["Pass"].ToString() == txtPass.Text.MaHoaMD5_())
                    {
                        if (ND.Rows[0]["Loai"].ToString() == "True")
                        {
                            Khachhang_Id = ND.Rows[0]["Id"].GetGuid();
                            TenDangNhap = ND.Rows[0]["Ma"].ToString();
                            Ten = ND.Rows[0]["Ten"].ToString();
                            Quyen = ND.Rows[0]["Loai"].ToString();
                            DangNhapThanhCong();
                            btnTrangQL.Visible = true;
                            lblXinChao.Text = "Xin chào: " + Ten;
                        }
                        else
                        {
                            Khachhang_Id = ND.Rows[0]["Id"].GetGuid();
                            TenDangNhap = ND.Rows[0]["Ma"].ToString();
                            Ten = ND.Rows[0]["Ten"].ToString();
                            Quyen = ND.Rows[0]["Loai"].ToString();
                            DangNhapThanhCong();
                            btnTrangQL.Visible = false;
                            lblXinChao.Text = "Xin chào: " + Ten;
                        }
                    }
                    else XtraMessageBox.Show("Mật khẩu chưa đúng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);   
                }
                else XtraMessageBox.Show("Tên đăng nhập chưa đúng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);   
            }
            else XtraMessageBox.Show("Cần nhập tên đăng nhập và mật khẩu để đăng nhập", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);   
        }

        private void btnDangKy_Click(object sender, EventArgs e)
        {
            
        }

        private void ptcNamThuy_Click(object sender, EventArgs e)
        {
            palLoadTrangchu.Visible = true;
            lblNoResult2.Text = null;
        }

        private void btnQuenMatKhau_Click(object sender, EventArgs e)
        {
            FrmLayLaiMatKhau frmLaylai_MK = new FrmLayLaiMatKhau();
            frmLaylai_MK.ShowDialog();
        }

        private void txtPass_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode.ToString()=="Return")
            {
                btnDangNhap_Click(null, null);
            }
        }

        private void btnTrangQL_Click(object sender, EventArgs e)
        {
            FrmMainContromller frmMainContromller = new FrmMainContromller(this);
            this.Hide();
            frmMainContromller.Show();
        }

        private DataTable DSSanpham(Guid Key_Id, string Key_Loai)
        {
            DataTable KQTim = new DataTable();
            if (Key_Loai == "Loai")
            {
                KQTim = _bllbus.Sanpham_Tim_Loai(Key_Id);
            }

            if (Key_Loai == "NSX")
            {
                KQTim = _bllbus.Sanpham_Tim_NSX(Key_Id);
            }
            return KQTim;
        }

        private void Fill_KQ(DataTable dt)
        {
            if (dt.Rows.Count > 0)
            {
                //proLoad.Visible = true;
                lblNoResult2.Text = "Có " + dt.Rows.Count.ToString() + " sản phẩm tìm thấy.";
                palLoadTrangchu.Visible = false;
             
                gcDS.DataSource = null;
                palHienSanpham.Dock = DockStyle.Fill;
                palHienSanpham.Controls.Add(gcDS);

                lvDS = new LayoutView(gcDS);
                lvDS.Click += new EventHandler(lvDS_Click);
                lvDS.OptionsView.ViewMode = LayoutViewMode.MultiColumn;
                gcDS.MainView = lvDS;
                lvDS.OptionsBehavior.AutoPopulateColumns = false;
                lvDS.OptionsView.ShowCardCaption = false;
                gcDS.Dock = DockStyle.Fill;

                //Tạo cột
                LayoutViewColumn colMa = lvDS.Columns.AddField("Ma");
                LayoutViewColumn colTen = lvDS.Columns.AddField("Ten");
                LayoutViewColumn colLoaihang = lvDS.Columns.AddField("Loaihang");
                LayoutViewColumn colNSX = lvDS.Columns.AddField("NSX");
                LayoutViewColumn colGiaban = lvDS.Columns.AddField("Giaban");
                LayoutViewColumn colHinh = lvDS.Columns.AddField("Hinh");
                // Add vào thẻ
                LayoutViewField fieldMa = colMa.LayoutViewField;
                LayoutViewField fieldTen = colTen.LayoutViewField;
                LayoutViewField fieldLoaihang = colLoaihang.LayoutViewField;
                LayoutViewField fieldNSX = colNSX.LayoutViewField;
                LayoutViewField fieldGiaban = colGiaban.LayoutViewField;
                LayoutViewField fieldHinh = colHinh.LayoutViewField;
                // Tạo hình
                colHinh.Visible = true;
                // Position the FirstName field to the right of the Photo field.
                fieldMa.Move(new LayoutItemDragController(fieldMa, fieldHinh,
                    InsertLocation.After, LayoutType.Horizontal));
                // Position the LastName field below the FirstName field.
                fieldTen.Move(new LayoutItemDragController(fieldTen, fieldMa,
                    InsertLocation.After, LayoutType.Vertical));
                // Create an Address Info group.
                LayoutControlGroup groupThemthongtin = lvDS.TemplateCard.AddGroup("Thêm thông tin",
                    fieldTen, InsertType.Bottom);
                // thêm vô group nhỏ
                groupThemthongtin.Add(colLoaihang.LayoutViewField);
                groupThemthongtin.Add(colNSX.LayoutViewField);
                groupThemthongtin.Add(colGiaban.LayoutViewField);

                // Assign editors to card fields.
                RepositoryItemPictureEdit riPictureEdit = gcDS.RepositoryItems.Add("PictureEdit") as RepositoryItemPictureEdit;
                riPictureEdit.SizeMode = PictureSizeMode.Squeeze;
                colHinh.ColumnEdit = riPictureEdit;

                // Customize card field options.
                colMa.Caption = "Mã sản phẩm";
                colTen.Caption = "Tên sản phẩm";
                colLoaihang.Caption = "Loại hàng";
                colNSX.Caption = "NXS";
                colGiaban.Caption = "Giá (VNĐ)";
                colHinh.Caption = "Hình đại diện";

                // Set the card's minimum size.
                lvDS.CardMinSize = new Size(350, 200);
                //proLoad.Visible = false;
                gcDS.DataSource = dt;
            }
            else
            {
                palLoadTrangchu.Visible = true;

                palHienSanpham.Controls.Clear();
                lblNoResult2.Text = STR_RESULT;
                lblNoResult2.Visible = true;
            }
        }

        public static string SeeFullInfoSanpham_Id = string.Empty;
        void lvDS_Click(object sender, EventArgs e)
        {
            try
            {
                SeeFullInfoSanpham_Id = lvDS.GetFocusedRowCellValue("Ten").ToString();
                FrmFullInfo frmFullInfo = new FrmFullInfo();
                frmFullInfo.ShowDialog();
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.ToString());
            }
        }

        string STR_RESULT = string.Empty;
        private void btnLoaiKimphun_Click(object sender, EventArgs e)
        {
            KeyLoai = "Loai";
            KeyId = new Guid("1ad746be-04a2-47b6-a2cf-2e9652988084");
            STR_RESULT = "Không có kết quả loại Kim phun";
            Fill_KQ(DSSanpham(KeyId, KeyLoai));
        }

        private void btnLoaiBec_Click(object sender, EventArgs e)
        {
            KeyLoai = "Loai";
            KeyId = new Guid("64cba334-6afd-45b6-ad4c-9845c0aca2f1");
            STR_RESULT = "Không có kết quả loại Béc";
            Fill_KQ(DSSanpham(KeyId, KeyLoai));
        }

        private void btnLoaiCambien_Click(object sender, EventArgs e)
        {
            KeyLoai = "Loai";
            KeyId = new Guid("2c430653-0c9d-48af-b2b3-6084a1c48f68");
            STR_RESULT = "Không có kết quả loại Cảm biến";
            Fill_KQ(DSSanpham(KeyId, KeyLoai));
        }

        private void btnLoaiBomcaoap_Click(object sender, EventArgs e)
        {
            KeyLoai = "Loai";
            KeyId = new Guid("7490f6b0-bff6-40a6-a9ce-aa332a251b71");
            STR_RESULT = "Không có kết quả loại Bơm cao áp";
            Fill_KQ(DSSanpham(KeyId, KeyLoai));
        }

        private void btnLupB_Click(object sender, EventArgs e)
        {
            KeyLoai = "Loai";
            KeyId = new Guid("94c25224-a40d-4a11-b564-4494272cd63f");
            STR_RESULT = "Không có kết quả loại Lúp B";
            Fill_KQ(DSSanpham(KeyId, KeyLoai));
        }

        private void btnNSXHuyndai_Click(object sender, EventArgs e)
        {
            KeyLoai = "NSX";
            KeyId = new Guid("754705a0-cec9-44a8-8086-aa0713f5f69b");
            STR_RESULT = "Không có kết quả cho nhà sản xuất Huyndai";
            Fill_KQ(DSSanpham(KeyId, KeyLoai));
        }

        private void btnNSXIsuzu_Click(object sender, EventArgs e)
        {
            KeyLoai = "NSX";
            KeyId = new Guid("40009611-3641-46e8-adb1-961f355cc7a6");
            STR_RESULT = "Không có kết quả cho nhà sản xuất Isuzu";
            Fill_KQ(DSSanpham(KeyId, KeyLoai));
        }

        private void btnNSXDaewoo_Click(object sender, EventArgs e)
        {
            KeyLoai = "NSX";
            KeyId = new Guid("0fc4a8a9-837e-44ca-9a66-9178fcc158cf");
            STR_RESULT = "Không có kết quả cho nhà sản xuất Daewoo";
            Fill_KQ(DSSanpham(KeyId, KeyLoai));
        }

        private void btnHino_Click(object sender, EventArgs e)
        {
            KeyLoai = "NSX";
            KeyId = new Guid("67147754-fe33-48e8-8078-4d1036d49f88");
            STR_RESULT = "Không có kết quả cho nhà sản xuất Hino";
            Fill_KQ(DSSanpham(KeyId, KeyLoai));
        }

        private void btnNSXFuso_Click(object sender, EventArgs e)
        {
            KeyLoai = "NSX";
            KeyId = new Guid("37173c04-684d-443d-baba-9ed18e92483d");
            STR_RESULT = "Không có kết quả cho nhà sản xuất Fuso";
            Fill_KQ(DSSanpham(KeyId, KeyLoai));
        }

        private void btnNSXFord_Click(object sender, EventArgs e)
        {
            KeyLoai = "NSX";
            KeyId = new Guid("52bf7e79-1ce0-44aa-9b54-31f110ba4734");
            STR_RESULT = "Không có kết quả cho nhà sản xuất Ford";
            Fill_KQ(DSSanpham(KeyId, KeyLoai));
        }

        private void txtTukhoa_Validated(object sender, EventArgs e)
        {
            if (txtTukhoa.Text.Trim().Length == 0) txtTukhoa.Text = null;
        }

        private void txtTukhoa_KeyDown(object sender, KeyEventArgs e)
        {
            lokLoai.EditValue = null;
            lokNSX.EditValue = null;
            txtTugia.Text = null;
            txtDengia.Text = null;
            if (e.KeyCode.ToString() == "Return" &&txtTukhoa.Text.Trim()!="")
            {
                if (chkTimten.Checked == true)
                {
                    DataTable dt = _bllbus.Sanpham_Tim_Ten(txtTukhoa.Text);
                    Fill_KQ(dt);
                }
                else
                {
                    DataTable dt = _bllbus.Sanpham_Select();
                    Fill_KQ(SearshAll.TimKiemTuongDoi_(dt,txtTukhoa.Text));
                }
            }
        }
    }
}
